/**	@file globali.h
 *	Questo è un header file che contiene tutte le variabili globali del progetto.
 * Alcune variabili sono extern per rendere il loro scope visibile anche ai file che includono questo
 * header senza problemi di multiple redefinition.
 */

#ifndef _GLOBALI_H_
#define _GLOBALI_H_


#include <allegro5/allegro.h>
#include <allegro5/allegro_primitives.h>
#include <allegro5/allegro_image.h>
#include <allegro5/allegro_audio.h>
#include <allegro5/allegro_acodec.h>
#include "models.h"

/** L'enumerato STATO serve per indicare in quale parte del gioco ci troviamo.
  * Ci sono quattro stati: quello di partenza che è FASE_TITOLO, dal quale si può andare solo a
  * FASE_GIOCO. Da FASE_GIOCO si può arrivare a FASE_PAUSA o a FASE_PERSO. 
  * DA FASE_PAUSA si può solo tornare a FASE_GIOCO. Infine da FASE_PERSO si ritorna a FASE_TITOLO
  */
 enum STATO{FASE_TITOLO, FASE_GIOCO, FASE_PERSO, FASE_PAUSA};

 /**Tasti che sono presi in considerazione nel gioco*/
 enum KEYS{LEFT, RIGHT, SPACE, P};
 
 /**ID degli oggetti presenti nel gioco*/
 enum IDS {GIOCATORE, BOLLA, NEMICO, FRUTTO};
 
 /**Assi x e y tra i quali vengono disegnati gli oggetti*/
 enum ASSI{X,Y};

const int WIDTH = 500; /**<Largezza della finestra di gioco */
const int HEIGHT = 700; /**< Altezza della finstra di gioco*/
const int NUM_BOLLE = 10; /**< Costante del numero di bolle massime gestibili in un array ::bolle[]*/
const int NUM_ROBOTS = 5; /**< Costante del numero di nemici/robot massimi in array ::nemici[], presenti sullo schermo*/
const int NUM_FRUTTA = 5; /**< Costante del numero di frutta/dolci massimi in array ::frutta[], presenti sullo schermo*/


extern ALLEGRO_BITMAP *giocatore[13];
extern ALLEGRO_BITMAP *nemici[4];
extern ALLEGRO_BITMAP *bonus[6];



extern int prevDir ;
extern int prevStato;
	

extern bool tasti[4];


extern ALLEGRO_SAMPLE *spara;
extern ALLEGRO_SAMPLE *perso;
extern ALLEGRO_SAMPLE *titolo;
extern ALLEGRO_SAMPLE *bobblefruit;
extern ALLEGRO_SAMPLE_INSTANCE *canzoneGioco;
extern ALLEGRO_SAMPLE_INSTANCE *canzoneTitolo;

extern Drago drago;
extern Bolle bolle[NUM_BOLLE];
extern Frutta frutta[NUM_FRUTTA];
extern Robot robot[NUM_ROBOTS];


#endif

